//
//  JSBind_SpiderMonkey.cpp
//  SPJSBind
//
//  Created by 云 浮 on 12-6-1.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#include "JSBind_SpiderMonkey.h"

namespace _SPIDERMONKEY_BIND {
//    template<class T> T _ConvertJSToC(jsval x, T res)
//    {
//        __ENTER_FUNCTION
//        T res ;
//        if (JSVAL_IS_BOOLEAN(x))
//        {
//            res = (T)JSVAL_TO_BOOLEAN(x) ;
//        }
//        else if (JSVAL_IS_INT(x))
//        {
//            res = (T)JSVAL_TO_INT(x) ;
//        }
//        else if (JSVAL_IS_DOUBLE(x))
//        {
//            res = (T)JSVAL_TO_DOUBLE(x) ;
//        }
//        else if (JSVAL_IS_STRING(x))
//        {
//            res = (JS_GetStringBytes(JSVAL_TO_STRING(x))) ;
//        }
//        else if (JSVAL_IS_OBJECT(x))
//        {
//            JSObject* pParam ;
//            JS_ValueToObject(SP_JSBind::CJSManager::Instance()->GetContext(), x, &pParam) ;
//            res = (T)JS_GetPrivate(SP_JSBind::CJSManager::Instance()->GetContext(), pParam) ;
//        }
//        else
//        {
//            printf("T _ConvertJSToC(jsval x, T) function \n") ;
//        }
//        return res ;
//        __EXIT_FUNCTION("_ConvertJSToC Function ERROR\n")
//        return (T)0 ;
//    }
//    
//    template<class T> jsval _ConvertCToJS(JSContext* cx, T x)
//    {
//        __ENTER_FUNCTION
//        jsval res ;
//        char pType = typeid(x).name()[0] ;
//        switch (pType) {
//            case 'b': { res = BOOLEAN_TO_JSVAL(x) ; } break ;
//            case 'i': { res = INT_TO_JSVAL(x) ; } break ;
//            case 'f': { res = DOUBLE_TO_JSVAL(JS_NewDouble(cx, x)) ; } break ;
//            case 'd': { res = DOUBLE_TO_JSVAL(JS_NewDouble(cx, x)) ; } break ;
//            case 'P': {
//                pType = typeid(x).name()[1] ;
//                switch (pType) {
//                    case 'c': { res = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, x)) ; } break ;
//                    case 'v': { res = PRIVATE_TO_JSVAL(x) ; } break ;
//                    default: {
//                        printf("type info [%s]\n", typeid(x).name()) ;
//                        res = OBJECT_TO_JSVAL(x->m_pJSObject) ;
//                    } break ;
//                }
//            } break ;
//            default: break;
//        }
//        return res ;
//        __EXIT_FUNCTION("_ConvertCToJS Function ERROR\n")
//        return jsval(0) ;
//    }
}

























